1
การสืบทอดและวิวัฒนาการของสถานะ
AI035Lesson 2
00:00

ในรูบี การสืบทอดไม่ใช่แค่เรื่องการแบ่งปันเมธอดเท่านั้น แต่ยังเกี่ยวกับ การวิวัฒนาการของสถานะเมื่อเราสร้างคลาสย่อย เช่น KaraokeSong < Songเราจะสร้างความสัมพันธ์แบบ "เป็น-หนึ่ง" โดยที่ลูกจะสืบทอดโครงสร้างจากพ่อแม่ พร้อมทั้งปรับตัวเพื่อกำหนดตัวตนของตนเอง

1. ห่วงโซ่การตั้งค่าเริ่มต้น

คำสำคัญ super คือสะพานเชื่อมระหว่างรุ่นต่างๆ ภายในเมธอด initializeการเรียกใช้ super จะส่งอาร์กิวเมนต์ขึ้นไปยังคอนสตรักเตอร์ของคลาสพ่อแม่ ทำให้มั่นใจได้ว่าตัวแปรอินสแตนซ์พื้นฐาน (@name, @artist) จะถูกตั้งค่าก่อนที่คลาสย่อยจะเพิ่มสถานะเฉพาะตัว (@lyrics)

class Song@name, @artistclass KaraokeSong@lyricssuper() เรียกใช้คลาสพ่อแม่

2. การขยายเมธอด

การแทนที่เมธอด เช่น to_s ช่วยให้เราขยายพฤติกรรมได้ โดยการเรียกใช้ super ภายในนิยามใหม่ เราจะจับผลลัพธ์สตริงจากคลาสพ่อแม่ และเพิ่มข้อมูลใหม่จากคลาสย่อย ทำให้เส้นทางการวิวัฒนาการยังคงสะอาดและสมเหตุสมผล

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>